Web Application ~世界中にServiceを提供する仕組み~
from IT技術の全体感
https://gyazo.com/244c5751e156b3d816a64a57e9136d83
Google Slide.icon/inteltank/Web Application ~世界中にServiceを提供する仕組み~
https://gyazo.com/1674e7b923045f3b9070895903fb73c1 https://docs.google.com/presentation/d/1N9AljQNAnLTofh1adOxlUno9_YjWy86NmzwFEvkhKGk/edit#slide=id.gb83e38e90d_0_504
このLectureで伝わると嬉しいこと
どんなに大きくても元は小さなパーツ。レゴと一緒。
大きいものを理解するコツ。連結ポイントで切り分けてそれぞれの役割を理解する
Computerの世界では「別れている」ことには理由がある。
お話しすること
全部つながらないと何も意味がないので、まずは最小単位から話をします。
動く状態から考えていくの大事(これはテスト駆動開発,アジャイルのところで話します)
一つの立派なweb applicationになるまで
⭐️まずは自分のPC。HTMLをクリックしたら見えた!これが最小単位
見えて嬉しいですね。これです。
クリックじゃなくてブラウザ使ってみましょう。URLのところにファイル名を。いけた!
⭐️じゃあ今度はfile://からhttps:// に。いけなくなった。
見に行く場所が変わった。
場所に対して「ください!」に「喜んで!」と返す人が必要
クライアント・サーバーモデル。
ネットワーク。これは別の機会にやりましょう。どうして相手まで届くのか?どうして途中で盗み見られないのか
さあ、httpsになったので自分のPCにおかなくて良くなりました。他の場所におきます。
おいた。これがserver
自分のPCの中にないのでみんなに公開するのが簡単になりました。
公開したことで、少しずつ欲望が出てきます。一つずつ対応していきましょう
既にあるHTMLを見てもらうだけじゃつまらん。人によって違うものを渡したい
→ Web Application
いいことばかりじゃありません。悲しいこともあります
すごい量の人に見てもらいたいなー。その時に一台のPCでいけるんだろうか?
→負荷分散(load balancer)
違うものを見せつつ…たくさんの人に見てもらう…。むむ。「同期」が難しいぞ?
→3サーバー構成(web, app, DB)
悪意のある攻撃が来るようになった!自分たちのserviceを守らないと
→ネットワークとセキュリティ。
うわー。大きいものをみんなで分担して作るの大変だぞ。どうやったらいいんだ
→MVC, マイクロサービス, BizDevOps, アジャイル, DDD, ウォーターフォール, 設計/テスト
管理するものたくさんだな……
→IaC, docker, docker-compose
その上で尽かして知っておきたいジャンル
ブラウザ使わないものもありますね。
API。ブラウザ使わない。
ネイティブアプリ。ブラウザ使わない
どこまでserverでやるか?その切れ目が良く変わります。
Native appとSwift/Java
web applicationとjavascript。NodeJS
M1はじめとした優秀なNeural engineの存在が、client sideへの移行を進めていますね
一方でGameとかはServer sideに依存が強くなってますね
その他の知識。
計算機基礎。つまりComputer Science
本質はネットワーク/通信技術。そしてハードウェア
小さい無駄が大きな非効率を生むので原理原則を知って、最適な利用を
Computerはできることが一握り。フラクタル構造。
だからこそどこかで見つけた構造がより抽象/より具体なところで同じ構造が見える。
バグ原因の見つけ方が一緒
最新技術だと巧みに「ハードウェアの限界」が隠されているので、基礎技術をどこかで学ぶことはとても大事
知っておきたい単語。なぜその単語があるの?
Web Applicationにおいて、理解しておくと良いこと
Computerは指示書(Code)通りにしか動かない
機械語/アセンブリ言語で、Computer(CPU)とタメ口で話す
アセンブリ言語はCPUごとに、存在する
単語を理解することで、IT worldを理解する
Computerには全て設定fileが存在する
Computerは曖昧な表現を理解できない
Computer(CPU)はSingle Taskを高速で繰り返す
概要
Interfaceを抑えてIT Systemの全体観を掴む
ITsystemは Input/Process/Outputの塊
IT systemの進化は通信技術の進化にlinkしている
世界中のPS3で最も強力なComputerを作る
Computer (CPU)の性能UPは「Spec up」より「分散処理」で行われる
共通Process/DataをServerで一手に担う
Serverとは不眠不休のComputer
Serverにrequestすると、responseとしてDataが返ってくる
世界中にServiceを提供する3つの仕組み
Web Serviceでしたいことに合わせて、Frameworkを変える
Web Server
最もSimpleなWebsiteを作る
HTML fileだけではweb siteを提供できない
HTTP通信では、あなたが誰か?Serverは判断できない
CMS
WebsiteのPage数が増えたらCMSを使う
Web siteはだいたいWordPressで作られている
Web Application
Userが「閲覧」以外もするならばWeb Application
WordPressはWeb Applicationではない
Web Applicationはmiddle wareの集合体
Processを分割して負荷分散
Web API
Web APIが、会社/国を超えたCollaborationを可能に
TPOに合わせてApplication層の配置を変える
ScrapboxはApplicationがClient側で動く
ブラウザレンダリングの仕組み